namespace OracleInternal.SqlAndPlsqlParser.LocalParsing
{
	internal abstract class OracleLpSpecificJoinClause : OracleLpStatementElement, IOracleLpNamedObjectContainer
	{
		protected OracleLpTableReference m_vTableReference;

		protected OracleLpJoinCondition m_vCondition;

		protected OracleLpJoinClauseType m_vClauseType;

		internal override OracleLpStatementElementType ElementType => OracleLpStatementElementType.JoinClause;

		public OracleLpTableReference TableReference
		{
			get
			{
				return m_vTableReference;
			}
			set
			{
				m_vTableReference = value;
				if (m_vTableReference != null)
				{
					m_vTableReference.Parent = this;
				}
			}
		}

		public OracleLpJoinCondition Condition
		{
			get
			{
				return m_vCondition;
			}
			set
			{
				m_vCondition = value;
			}
		}

		public OracleLpJoinClauseType ClauseType => m_vClauseType;

		public OracleLpSpecificJoinClause(OracleLpFromListTerm ft)
			: base(ft)
		{
		}

		public virtual void Resolve()
		{
		}

		public void RetrieveNamedObjectReferences(OracleLpStatement statement)
		{
			m_vTableReference.RetrieveNamedObjectReferences(statement);
		}
	}
}
